읽기 쉬운 코드 : 간결, 효율적, 디버깅 쉬워짐, 코드 완성도 높아짐
알고리즘 문제 풀이에서 좋은 코드 원칙
전역 변수 광범위한 사용: 프로그램 흐름 파악에 안 좋지만,
알고리즘 문제 풀이 시 작성 코드가 단순, 변수 사용하는 부분 파악이 명확해 잃는 것이 적음
foreach 구문 사용: 범위 기반 for문
3항 조건 연산자 활용
반복되는 코드를 함수나 클래스로 분리: 알고리즘 문제 풀이에서는 활용할 경우 적음
표준 라이브러리 숙지: C++ STL(또는 JAVA Collection/Collections)에 이미 구현된 문자열, 동적 배열, 스택, 큐, 리스트, 사전 등 자료구조를 숙지해야 스스로 구현하는 실수 막을 수 있음
일관적이고 명료한 명명법 사용: (e.g.) isDoSomething(int doing, int what)
같은 자료는 같은 형태로 저장: 형태, 단위 등 하나로 통일
코드와 데이터 분리: 월을 출력 시 숫자 대신 "Jan", "Feb" 등으로 출력,
연산으로만 표현하는 대신 int move_left[2] = {1, -1};
와 같이 왼쪽 이동을 배열로 저장함
실수 주의
산술 오버플로우
배열 밖 원소 접근: C/C++ 컴파일러가 확인해 주지 않음(성능을 위해)
스택 오버플로우: call stack 오버플로우로 프로그램 강제종료됨, 재귀 함수 사용 시 재귀 호출 깊이 주의, 지역 변수는 스택 메모리 사용하므로 배열을 지역 변수로 사용하면 스택 오버플로우 나기 쉬움, 전역 변수 또는 힙에 메모리 할당하는 STL 컨테이너 사용
너무 느린 입출력 방식: C++ cin, cout 등 고수준 입출력 방식 대신 printf, scanf 사용 권장(입출력 1만개 이상일 때 권장)
변수 초기화: 초기화 안하면 쓰레기 값 들어 있음 명심